home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / VBSamples / DirectShow / Editing / DexterVB / modDisposable.bas < prev    next >
Encoding:
BASIC Source File  |  2001-10-08  |  40.8 KB  |  769 lines

  1. Attribute VB_Name = "modDisposable"
  2. '*******************************************************************************
  3. '*       This is a part of the Microsoft DXSDK Code Samples.
  4. '*       Copyright (C) 1999-2001 Microsoft Corporation.
  5. '*       All rights reserved.
  6. '*       This source code is only intended as a supplement to
  7. '*       Microsoft Development Tools and/or SDK documentation.
  8. '*       See these sources for detailed information regarding the
  9. '*       Microsoft samples programs.
  10. '*******************************************************************************
  11. Option Explicit
  12. Option Base 0
  13. Option Compare Text
  14.  
  15.  
  16.  
  17. ' **************************************************************************************************************************************
  18. ' * PUBLIC INTERFACE- GENERAL PROCEDURES
  19. ' *
  20. ' *
  21.             ' ******************************************************************************************************************************
  22.             ' * procedure name: GetTimelineDirect
  23.             ' * procedure description:   Populate the treeview control by walking the Timeline via Dexter API's
  24.             ' *
  25.             ' ******************************************************************************************************************************
  26.             Public Sub GetTimelineDirect(ctrlTreeView As TreeView, objTimeline As AMTimeline, Optional colDataStore As Collection)
  27.             Dim nCount As Long
  28.             Dim objNode As node
  29.             Dim nGroupCount As Long
  30.             Dim bstrRootGUID As String
  31.             Dim bstrGroupGUID As String
  32.             Dim objGroup As AMTimelineGroup
  33.             Dim objTimelineObject As AMTimelineObj
  34.             On Local Error GoTo ErrLine
  35.             
  36.            'Ensure the treeview control's nodes are cleared
  37.             If Not ctrlTreeView Is Nothing Then
  38.                If ctrlTreeView.Nodes.Count <> 0 Then
  39.                   ctrlTreeView.Nodes.Clear
  40.                End If
  41.             End If
  42.             
  43.             'clear the collection
  44.             If Not colDataStore Is Nothing Then
  45.                Do Until colDataStore.Count = 0
  46.                colDataStore.Remove 1
  47.                Loop
  48.             End If
  49.             
  50.            'get a guid for a key
  51.            bstrRootGUID = GetGUID
  52.            'Insert the root timeline node
  53.            Set objNode = ctrlTreeView.Nodes.Add(, , bstrRootGUID, "TimeLine 1", 1)
  54.            objNode.Tag = "AMTimeline"
  55.            'append to datastore (optional)
  56.            If Not colDataStore Is Nothing Then colDataStore.Add objTimeline, bstrRootGUID
  57.            
  58.            
  59.            'Obtain the number of groups to populate with
  60.            nGroupCount = GetGroupCount(objTimeline)
  61.             While nCount < nGroupCount: DoEvents
  62.                 'get the group
  63.                 objTimeline.GetGroup objTimelineObject, nCount
  64.                 'instantiate the local copy
  65.                 Set objGroup = objTimelineObject
  66.                 'get a guid for a key
  67.                 bstrGroupGUID = GetGUID
  68.                 'Insert the group timeline node
  69.                 Set objNode = ctrlTreeView.Nodes.Add(1, 4, bstrGroupGUID, "Group" + CStr(nCount) & Chr(32), 2)
  70.                 objNode.Tag = "AMTimelineGroup"
  71.                 'append to datastore (optional)
  72.                 If Not colDataStore Is Nothing Then colDataStore.Add objGroup, bstrGroupGUID
  73.                 'append all tracks
  74.                 AddTracks ctrlTreeView, bstrGroupGUID, objTimelineObject, colDataStore
  75.                 'append all effects
  76.                 AddEffects ctrlTreeView, bstrGroupGUID, objTimelineObject, colDataStore
  77.                 'append all transitions
  78.                 AddTransitions ctrlTreeView, bstrGroupGUID, objTimelineObject, colDataStore
  79.                 'append compositions
  80.                 AddComposites ctrlTreeView, bstrGroupGUID, objTimelineObject, colDataStore
  81.                 'dereference & clean-up
  82.                 If Not objGroup Is Nothing Then Set objGroup = Nothing
  83.                 If Not objTimelineObject Is Nothing Then Set objTimelineObject = Nothing
  84.                 'increment the group count by a factor of one
  85.                 nCount = nCount + 1
  86.             Wend
  87.             
  88.             'expand all items in the treeview control
  89.             For nCount = 1 To ctrlTreeView.Nodes.Count
  90.                     ctrlTreeView.Nodes(nCount).Expanded = True
  91.             Next
  92.             
  93.             'clean-up & dereference
  94.             If Not objGroup Is Nothing Then Set objGroup = Nothing
  95.             If Not objTimelineObject Is Nothing Then Set objTimelineObject = Nothing
  96.             Exit Sub
  97.             
  98. ErrLine:
  99.             Err.Clear
  100.             Exit Sub
  101.             End Sub
  102.             
  103.             
  104.             
  105.             ' ******************************************************************************************************************************
  106.             ' * procedure name: RefreshListView
  107.             ' * procedure description:  Updates the listview
  108.             ' *
  109.             ' ******************************************************************************************************************************
  110.             Public Sub RefreshListView(ctrlListView As ListView, bstrType As String, bstrKey As String)
  111.             Dim objListItem As ListItem
  112.             On Local Error GoTo ErrLine
  113.             
  114.             'setup listview
  115.             If ctrlListView.View <> lvwReport Then ctrlListView.View = lvwReport
  116.             If ctrlListView.ListItems.Count <> 0 Then Call ctrlListView.ListItems.Clear
  117.             If ctrlListView.ColumnHeaders.Count = 0 Then
  118.                 ctrlListView.ColumnHeaders.Add , "Parameter", "Parameter", (ctrlListView.Width / 2) - 50
  119.                 ctrlListView.ColumnHeaders.Add , "Value", "Value", (ctrlListView.Width / 2) - 50
  120.             End If
  121.             'append items to the listview
  122.             Set objListItem = ctrlListView.ListItems.Add(1, "Type", "Type")
  123.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = bstrType
  124.             Set objListItem = ctrlListView.ListItems.Add(2, "Key Name", "Key Name")
  125.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = bstrKey
  126.             Set objListItem = ctrlListView.ListItems.Add(3, Space(1), Space(1))
  127.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = Space(1)
  128.             Exit Sub
  129.             
  130. ErrLine:
  131.             Err.Clear
  132.             Exit Sub
  133.             End Sub
  134.             
  135.             
  136.             
  137. ' **************************************************************************************************************************************
  138. ' * PUBLIC INTERFACE- ADD PROCEDURES  (PROCEDURES ADD GIVEN ITEMS TO THE TREEVIEW)
  139. ' *
  140. ' *
  141.             ' ******************************************************************************************************************************
  142.             ' * procedure name: AddComposites
  143.             ' * procedure description: appends all composites on to the treeview
  144.             ' *
  145.             ' ******************************************************************************************************************************
  146.             Public Sub AddComposites(ctrlTreeView As TreeView, bstrParent As String, objTimelineObject As AMTimelineObj, Optional colDataStore As Collection)
  147.             Dim nType As Long
  148.             Dim objNode As node
  149.             Dim nPriority As Long
  150.             Dim bstrGUID As String
  151.             Dim nTrackCount As Long
  152.             Dim nTotalVirtualTracks As Long
  153.             Dim objComp As AMTimelineComp
  154.             Dim objLocalTimelineObject As AMTimelineObj
  155.             Dim objCompVirtualTrack As IAMTimelineVirtualTrack
  156.             On Local Error GoTo ErrLine
  157.             
  158.             'derive composition
  159.             Set objComp = objTimelineObject
  160.             'obtain track count
  161.             objComp.VTrackGetCount nTotalVirtualTracks
  162.           
  163.           
  164.             'loop through the tracks
  165.             While nTrackCount < nTotalVirtualTracks: DoEvents
  166.                 'get the object
  167.                 objComp.GetVTrack objLocalTimelineObject, nTrackCount
  168.                 'obtain the timeline type
  169.                 objLocalTimelineObject.GetTimelineType nType
  170.                 
  171.                 If nType = TIMELINE_MAJOR_TYPE_COMPOSITE Then
  172.                     'obtain the comp
  173.                     Set objCompVirtualTrack = objLocalTimelineObject
  174.                     'obtain the Priority
  175.                     objCompVirtualTrack.TrackGetPriority nPriority
  176.                     'get a guid for a key
  177.                     bstrGUID = GetGUID
  178.                     'Insert the root timeline node
  179.                     Set objNode = ctrlTreeView.Nodes.Add(bstrParent, 4, bstrGUID, "Comp" & CStr(nPriority) & Chr(32), 2)
  180.                     objNode.Tag = "AMTimelineComp"
  181.                     'append to datastore (optional)
  182.                     If Not colDataStore Is Nothing Then colDataStore.Add objCompVirtualTrack, bstrGUID
  183.                     'recursive call of dependent children
  184.                     Call AddEffects(ctrlTreeView, bstrGUID, objLocalTimelineObject, colDataStore)
  185.                     Call AddTransitions(ctrlTreeView, bstrGUID, objLocalTimelineObject, colDataStore)
  186.                     Call AddComposites(ctrlTreeView, bstrGUID, objLocalTimelineObject, colDataStore)
  187.                     
  188.                 ElseIf nType = TIMELINE_MAJOR_TYPE_TRACK Then
  189.                     'recursive call of dependent children
  190.                     AddTracks ctrlTreeView, bstrParent, objLocalTimelineObject, colDataStore
  191.                 End If
  192.                 
  193.                 'clean-up & dereference
  194.                 If Not objCompVirtualTrack Is Nothing Then Set objCompVirtualTrack = Nothing
  195.                 If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  196.                 'increment track counter
  197.                 nTrackCount = nTrackCount + 1
  198.             Wend
  199.             
  200.             'clean-up & dereference
  201.             If Not objNode Is Nothing Then Set objNode = Nothing
  202.             If Not objComp Is Nothing Then Set objComp = Nothing
  203.             If Not objCompVirtualTrack Is Nothing Then Set objCompVirtualTrack = Nothing
  204.             If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  205.             Exit Sub
  206.             
  207. ErrLine:
  208.             Err.Clear
  209.             Exit Sub
  210.             End Sub
  211.             
  212.      
  213.             
  214.             ' ******************************************************************************************************************************
  215.             ' * procedure name: AddEffects
  216.             ' * procedure description: appends all effects on to the treeview
  217.             ' *
  218.             ' ******************************************************************************************************************************
  219.             Public Sub AddEffects(ctrlTreeView As TreeView, bstrParent As String, objTimelineObject As AMTimelineObj, Optional colDataStore As Collection)
  220.             Dim objNode As node
  221.             Dim bstrGUID As String
  222.             Dim nEffectCount As Long
  223.             Dim nTotalEffects As Long
  224.             Dim objEffect As AMTimelineEffect
  225.             Dim objLocalTimelineObject As AMTimelineObj
  226.             Dim objEffectable As IAMTimelineEffectable
  227.             On Local Error GoTo ErrLine
  228.             
  229.             Set objEffectable = objTimelineObject
  230.             objEffectable.EffectGetCount nTotalEffects
  231.             
  232.             While nEffectCount < nTotalEffects: DoEvents
  233.                 'get the timeline object
  234.                 objEffectable.GetEffect objLocalTimelineObject, nEffectCount
  235.                 'get the effect from the timeline object
  236.                 Set objEffect = objLocalTimelineObject
  237.                 'get a guid for a key
  238.                 bstrGUID = GetGUID
  239.                 'Insert the effect timeline node
  240.                 Set objNode = ctrlTreeView.Nodes.Add(bstrParent, 4, bstrGUID, "Effect" & CStr(nEffectCount) & Chr(32), 2)
  241.                 objNode.Tag = "AMTimelineEffect"
  242.                 'append to datastore (optional)
  243.                 If Not colDataStore Is Nothing Then colDataStore.Add objEffect, bstrGUID
  244.                 'clean-up & dereference
  245.                 If Not objEffect Is Nothing Then Set objEffect = Nothing
  246.                 If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  247.                 'increment the count
  248.                 nEffectCount = nEffectCount + 1
  249.             Wend
  250.             
  251.             'clean-up & dereference
  252.             If Not objNode Is Nothing Then Set objNode = Nothing
  253.             If Not objEffect Is Nothing Then Set objEffect = Nothing
  254.             If Not objEffectable Is Nothing Then Set objEffectable = Nothing
  255.             If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  256.             Exit Sub
  257.             
  258. ErrLine:
  259.             Err.Clear
  260.             Exit Sub
  261.             End Sub
  262.             
  263.             
  264.             ' ******************************************************************************************************************************
  265.             ' * procedure name: AddTracks
  266.             ' * procedure description: appends all tracks on to the treeview; objTimelineObject evaluates to a virtual track
  267.             ' *
  268.             ' ******************************************************************************************************************************
  269.             Public Sub AddTracks(ctrlTreeView As TreeView, bstrParent As String, objTimelineObject As AMTimelineObj, Optional colDataStore As Collection)
  270.             Dim objNode As node
  271.             Dim nPriority As Long
  272.             Dim bstrGUID As String
  273.             Dim objTrack As AMTimelineTrack
  274.             Dim objVirtualTrack As IAMTimelineVirtualTrack
  275.             On Local Error GoTo ErrLine
  276.             
  277.             'get the track object
  278.             Set objTrack = objTimelineObject
  279.             'get the virtual track object
  280.             Set objVirtualTrack = objTrack
  281.             'get the virtual track priority
  282.             objVirtualTrack.TrackGetPriority nPriority
  283.             
  284.             'get a guid for a key
  285.             bstrGUID = GetGUID
  286.             'Insert the root timeline node
  287.             Set objNode = ctrlTreeView.Nodes.Add(bstrParent, 4, bstrGUID, "Track" & CStr(nPriority) & Chr(32), 2)
  288.             objNode.Tag = "AMTimelineTrack"
  289.             'append to datastore (optional)
  290.             If Not colDataStore Is Nothing Then colDataStore.Add objTrack, bstrGUID
  291.             'recursive call of dependent children
  292.             Call AddSources(ctrlTreeView, bstrGUID, objTimelineObject, colDataStore)
  293.             Call AddEffects(ctrlTreeView, bstrGUID, objTimelineObject, colDataStore)
  294.             Call AddTransitions(ctrlTreeView, bstrGUID, objTimelineObject, colDataStore)
  295.             'clean-up & dereference
  296.             If Not objNode Is Nothing Then Set objNode = Nothing
  297.             If Not objTrack Is Nothing Then Set objTrack = Nothing
  298.             If Not objVirtualTrack Is Nothing Then Set objVirtualTrack = Nothing
  299.             Exit Sub
  300.             
  301. ErrLine:
  302.             Err.Clear
  303.             Exit Sub
  304.             End Sub
  305.             
  306.             
  307.            
  308.             ' ******************************************************************************************************************************
  309.             ' * procedure name: AddSources
  310.             ' * procedure description: appends all sources on to the treeview
  311.             ' *
  312.             ' ******************************************************************************************************************************
  313.             Public Sub AddSources(ctrlTreeView As TreeView, bstrParent As String, objTimelineObject As AMTimelineObj, Optional colDataStore As Collection)
  314.             Dim objNode As node
  315.             Dim dblStart As Double
  316.             Dim bstrGUID As String
  317.             Dim nSourceCount As Long
  318.             Dim nTotalSources As Long
  319.             Dim objSource As AMTimelineSrc
  320.             Dim objTrack As AMTimelineTrack
  321.             Dim objLocalTimelineObject As AMTimelineObj
  322.             On Local Error GoTo ErrLine
  323.             
  324.             'get a track
  325.             Set objTrack = objTimelineObject
  326.             'get the number of sources
  327.             objTrack.GetSourcesCount nTotalSources
  328.             
  329.             
  330.             While nSourceCount < nTotalSources: DoEvents
  331.                 'get the timeline object
  332.                 objTrack.GetNextSrc2 objLocalTimelineObject, dblStart
  333.                 'derive the source object from the timeline object
  334.                 Set objSource = objLocalTimelineObject
  335.                 'get a guid for a key
  336.                 bstrGUID = GetGUID
  337.                 'Insert the root timeline node
  338.                 Set objNode = ctrlTreeView.Nodes.Add(bstrParent, 4, bstrGUID, "Clip" & CStr(nSourceCount) & Chr(32), 2)
  339.                 objNode.Tag = "AMTimelineSrc"
  340.                 'append to datastore (optional)
  341.                 If Not colDataStore Is Nothing Then colDataStore.Add objSource, bstrGUID
  342.                 'dereference & clean-up
  343.                 If Not objSource Is Nothing Then Set objSource = Nothing
  344.                 If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  345.                 'increment the source counter
  346.                 nSourceCount = nSourceCount + 1
  347.             Wend
  348.             'dereference & clean-up
  349.             If Not objNode Is Nothing Then Set objNode = Nothing
  350.             If Not objTrack Is Nothing Then Set objTrack = Nothing
  351.             If Not objSource Is Nothing Then Set objSource = Nothing
  352.             If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  353.             Exit Sub
  354.             
  355. ErrLine:
  356.             Err.Clear
  357.             Exit Sub
  358.             End Sub
  359.             
  360.             
  361.             ' ******************************************************************************************************************************
  362.             ' * procedure name: AddTransitions
  363.             ' * procedure description: appends an all the transitions on to the treeview
  364.             ' *
  365.             ' ******************************************************************************************************************************
  366.             Public Sub AddTransitions(ctrlTreeView As TreeView, bstrParent As String, objTimelineObject As AMTimelineObj, Optional colDataStore As Collection)
  367.             Dim objNode As node
  368.             Dim bstrGUID As String
  369.             Dim nTransitionCount As Long
  370.             Dim nTotalTransitions As Long
  371.             Dim dblReferenceTime As Double
  372.             Dim objTransition As AMTimelineTrans
  373.             Dim objTransable As IAMTimelineTransable
  374.             Dim objLocalTimelineObject As AMTimelineObj
  375.             On Local Error GoTo ErrLine
  376.             
  377.             'get the transable
  378.             Set objTransable = objTimelineObject
  379.             'get the transition count
  380.             objTransable.TransGetCount nTotalTransitions
  381.             
  382.             While nTransitionCount < nTotalTransitions: DoEvents
  383.                 'get the next transition into a timeline object
  384.                 objTransable.GetNextTrans2 objLocalTimelineObject, dblReferenceTime
  385.                 'get the transition object from the timeline object
  386.                 Set objTransition = objLocalTimelineObject
  387.                 'get a guid for a key
  388.                 bstrGUID = GetGUID
  389.                 'Insert the root timeline node
  390.                 Set objNode = ctrlTreeView.Nodes.Add(bstrParent, 4, bstrGUID, "Transition" & CStr(nTransitionCount) & Chr(32), 2)
  391.                 objNode.Tag = "AMTimelineTrans"
  392.                 'append to datastore (optional)
  393.                 If Not colDataStore Is Nothing Then colDataStore.Add objTransition, bstrGUID
  394.                 'clean-up & dereference
  395.                 If Not objTransition Is Nothing Then Set objTransition = Nothing
  396.                 If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  397.                 'increment the transition count
  398.                 nTransitionCount = nTransitionCount + 1
  399.             Wend
  400.             
  401.             'clean-up & dereference
  402.             If Not objNode Is Nothing Then Set objNode = Nothing
  403.             If Not objTransable Is Nothing Then Set objTransable = Nothing
  404.             If Not objTransition Is Nothing Then Set objTransition = Nothing
  405.             If Not objLocalTimelineObject Is Nothing Then Set objLocalTimelineObject = Nothing
  406.             Exit Sub
  407.             
  408. ErrLine:
  409.             Err.Clear
  410.             Exit Sub
  411.             End Sub
  412.  
  413.  
  414.  
  415. ' **************************************************************************************************************************************
  416. ' * PUBLIC INTERFACE- VIEW PROCEDURES  (PROCEDURES GET INFO FROM A TIMELINE OBJECT & DISPLAY IN LISTVIEW)
  417. ' *
  418. ' *
  419.             ' ******************************************************************************************************************************
  420.             ' * procedure name: ViewTimelineInfo
  421.             ' * procedure description: updates the ide/listview to display the given objTimeline information
  422.             ' *
  423.             ' ******************************************************************************************************************************
  424.             Public Sub ViewTimelineInfo(ctrlListView As ListView, objTimeline As AMTimeline)
  425.             Dim nDirty As Long
  426.             Dim nInsertMode As Long
  427.             Dim dblDuration As Double
  428.             Dim objListItem As ListItem
  429.             Dim nEffectsEnabled As Long
  430.             Dim dblDefaultFPS As Double
  431.             Dim bstrDefaultEffect As String
  432.             Dim nTransitionsEnabled As Long
  433.             Dim bstrDefaultTransition As String
  434.             On Local Error GoTo ErrLine
  435.             
  436.             'obtain property value(s)
  437.             objTimeline.GetInsertMode nInsertMode
  438.             objTimeline.TransitionsEnabled nTransitionsEnabled
  439.             objTimeline.EffectsEnabled nEffectsEnabled
  440.             objTimeline.GetDefaultFPS dblDefaultFPS
  441.             objTimeline.IsDirty nDirty
  442.             bstrDefaultTransition = objTimeline.GetDefaultTransitionB
  443.             bstrDefaultEffect = objTimeline.GetDefaultEffectB
  444.             
  445.             'append timeline's information to the listview
  446.             Set objListItem = ctrlListView.ListItems.Add(4, "InsertMode", "InsertMode")
  447.             If nInsertMode = 2 Then
  448.                 objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = "INSERT"
  449.             Else: objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = "OVERLAY"
  450.             End If
  451.             Set objListItem = ctrlListView.ListItems.Add(5, "TransitionsEnabled", "TransitionsEnabled")
  452.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nTransitionsEnabled)
  453.             Set objListItem = ctrlListView.ListItems.Add(6, "EffectsEnabled", "EffectsEnabled")
  454.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nEffectsEnabled)
  455.             Set objListItem = ctrlListView.ListItems.Add(7, "Duration", "Duration")
  456.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblDuration)
  457.             Set objListItem = ctrlListView.ListItems.Add(8, "DefaultFPS", "DefaultFPS")
  458.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblDefaultFPS)
  459.             Set objListItem = ctrlListView.ListItems.Add(9, "Dirty", "Dirty")
  460.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nDirty)
  461.             Set objListItem = ctrlListView.ListItems.Add(10, "DefaultTransition", "DefaultTransition")
  462.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = bstrDefaultTransition
  463.             Set objListItem = ctrlListView.ListItems.Add(11, "DefaultEffect", "DefaultEffect")
  464.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = bstrDefaultEffect
  465.             
  466.             'clean-up & dereference
  467.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  468.             Exit Sub
  469.             
  470. ErrLine:
  471.             Err.Clear
  472.             Exit Sub
  473.             End Sub
  474.             
  475.             
  476.             
  477.             ' ******************************************************************************************************************************
  478.             ' * procedure name: ViewGroupInfo
  479.             ' * procedure description: updates the ide/listview to display the given group information
  480.             ' *
  481.             ' ******************************************************************************************************************************
  482.             Public Sub ViewGroupInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  483.             Dim nPriority As Long
  484.             Dim nMediaType As Long
  485.             Dim objListItem As ListItem
  486.             Dim nPreviewMode As Long
  487.             Dim dblOutputFPS As Double
  488.             Dim bstrGroupName As String
  489.             Dim nOutputBuffering As Long
  490.             Dim objGroup As AMTimelineGroup
  491.             On Local Error GoTo ErrLine
  492.             
  493.             'obtain group from timeline object
  494.             Set objGroup = objTimelineObject
  495.             
  496.             'obtain property value(s)
  497.             objGroup.GetPriority nPriority
  498.             objGroup.GetOutputFPS dblOutputFPS
  499.             objGroup.GetPreviewMode nPreviewMode
  500.             objGroup.GetOutputBuffering nOutputBuffering
  501.             
  502.             'append the timeline's information to the listview control
  503.             Set objListItem = ctrlListView.ListItems.Add(4, "GroupName", "GroupName")
  504.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(bstrGroupName)
  505.             Set objListItem = ctrlListView.ListItems.Add(5, "MediaType", "MediaType")
  506.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nMediaType)
  507.             Set objListItem = ctrlListView.ListItems.Add(6, "Priority", "Priority")
  508.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nPriority)
  509.             Set objListItem = ctrlListView.ListItems.Add(7, "OutputFPS", "OutputFPS")
  510.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblOutputFPS)
  511.             Set objListItem = ctrlListView.ListItems.Add(8, "PreviewMode", "PreviewMode")
  512.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nPreviewMode)
  513.             Set objListItem = ctrlListView.ListItems.Add(9, "Buffering", "Buffering")
  514.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nOutputBuffering)
  515.             
  516.             'clean-up & dereference
  517.             If Not objGroup Is Nothing Then Set objGroup = Nothing
  518.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  519.             Exit Sub
  520.             
  521. ErrLine:
  522.             Err.Clear
  523.             Exit Sub
  524.             End Sub
  525.             
  526.             
  527.             ' ******************************************************************************************************************************
  528.             ' * procedure name: ViewCompositeInfo
  529.             ' * procedure description: updates the ide/listview to display the given composition information
  530.             ' *
  531.             ' ******************************************************************************************************************************
  532.             Public Sub ViewCompositeInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  533.             Dim nPriority As Long
  534.             Dim objListItem As ListItem
  535.             Dim dblStartTime As Double
  536.             Dim dblStopTime As Double
  537.             Dim objVirtualTrack As IAMTimelineVirtualTrack
  538.             On Local Error GoTo ErrLine
  539.             
  540.             'obtain the virtual track from the timeline object
  541.             Set objVirtualTrack = objTimelineObject
  542.             
  543.             'obtain property value(s)
  544.             objVirtualTrack.TrackGetPriority nPriority
  545.             objTimelineObject.GetStartStop2 dblStartTime, dblStopTime
  546.             
  547.             'append the composite's information to the listview control
  548.             Set objListItem = ctrlListView.ListItems.Add(4, "Priority", "Priority")
  549.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nPriority)
  550.             Set objListItem = ctrlListView.ListItems.Add(5, "Start", "Start")
  551.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStartTime)
  552.             Set objListItem = ctrlListView.ListItems.Add(6, "Stop", "Stop")
  553.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStopTime)
  554.             
  555.             'clean-up & dereference
  556.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  557.             If Not objVirtualTrack Is Nothing Then Set objVirtualTrack = Nothing
  558.             Exit Sub
  559.             
  560. ErrLine:
  561.             Err.Clear
  562.             Exit Sub
  563.             End Sub
  564.             
  565.             
  566.             ' ******************************************************************************************************************************
  567.             ' * procedure name: ViewTransitionInfo
  568.             ' * procedure description: updates the ide/listview to display the given transition information
  569.             ' *
  570.             ' ******************************************************************************************************************************
  571.             Public Sub ViewTransitionInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  572.             Dim nCutsOnly As Long
  573.             Dim nSwapInputs As Long
  574.             Dim dblCutpoint As Double
  575.             Dim objListItem As ListItem
  576.             Dim dblStartTime As Double
  577.             Dim dblStopTime As Double
  578.             Dim objTransition As AMTimelineTrans
  579.             On Local Error GoTo ErrLine
  580.             
  581.             'obtain transition from given timeline object
  582.             Set objTransition = objTimelineObject
  583.             
  584.             'obtain property values
  585.             objTimelineObject.GetStartStop2 dblStartTime, dblStopTime
  586.             objTransition.GetCutPoint2 dblCutpoint
  587.             objTransition.GetCutsOnly nCutsOnly
  588.             objTransition.GetSwapInputs nSwapInputs
  589.             
  590.             'append transition's information to the listview control
  591.             Set objListItem = ctrlListView.ListItems.Add(4, "CLSID", "CLSID")
  592.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(objTimelineObject.GetSubObjectGUIDB)
  593.             Set objListItem = ctrlListView.ListItems.Add(5, "Start", "Start")
  594.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStartTime)
  595.             Set objListItem = ctrlListView.ListItems.Add(6, "Stop", "Stop")
  596.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStopTime)
  597.             Set objListItem = ctrlListView.ListItems.Add(7, "CutPoint", "CutPoint")
  598.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblCutpoint)
  599.             Set objListItem = ctrlListView.ListItems.Add(8, "CutsOnly", "CutsOnly")
  600.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nCutsOnly)
  601.             Set objListItem = ctrlListView.ListItems.Add(9, "SwapIputs", "SwapIputs")
  602.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nSwapInputs)
  603.             
  604.             'clean-up & dereference
  605.             If Not objTransition Is Nothing Then Set objTransition = Nothing
  606.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  607.             Exit Sub
  608.             
  609. ErrLine:
  610.             Err.Clear
  611.             Exit Sub
  612.             End Sub
  613.             
  614.             
  615.             ' ******************************************************************************************************************************
  616.             ' * procedure name: ViewEffectInfo
  617.             ' * procedure description: updates the ide/listview to display the given effect information
  618.             ' *
  619.             ' ******************************************************************************************************************************
  620.             Public Sub ViewEffectInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  621.             Dim nPriority As Long
  622.             Dim objListItem As ListItem
  623.             Dim dblStartTime As Double
  624.             Dim dblStopTime As Double
  625.             Dim objEffect As AMTimelineEffect
  626.             On Local Error GoTo ErrLine
  627.             
  628.             'obtain effect object from timeline object
  629.             Set objEffect = objTimelineObject
  630.             
  631.             'obtain property values
  632.             objEffect.EffectGetPriority nPriority
  633.             objTimelineObject.GetStartStop2 dblStartTime, dblStopTime
  634.             
  635.             'append the effect's information to the listview control
  636.             Set objListItem = ctrlListView.ListItems.Add(4, "CLSID", "CLSID")
  637.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(objTimelineObject.GetSubObjectGUIDB)
  638.             Set objListItem = ctrlListView.ListItems.Add(5, "Start", "Start")
  639.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStartTime)
  640.             Set objListItem = ctrlListView.ListItems.Add(6, "Stop", "Stop")
  641.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStopTime)
  642.             
  643.             'clean-up & dereference
  644.             If Not objEffect Is Nothing Then Set objEffect = Nothing
  645.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  646.             Exit Sub
  647.             
  648. ErrLine:
  649.             Err.Clear
  650.             Exit Sub
  651.             End Sub
  652.             
  653.             
  654.             ' ******************************************************************************************************************************
  655.             ' * procedure name: ViewTrackInfo
  656.             ' * procedure description: updates the ide/listview to display the given track information
  657.             ' *
  658.             ' ******************************************************************************************************************************
  659.             Public Sub ViewTrackInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  660.             Dim nBlank As Long
  661.             Dim nPriority As Long
  662.             Dim nMuted As Long
  663.             Dim dblStartTime As Double
  664.             Dim dblStopTime As Double
  665.             Dim objListItem As ListItem
  666.             Dim objTimelineTrack As AMTimelineTrack
  667.             Dim objTimelineVirtualTrack As IAMTimelineVirtualTrack
  668.             On Local Error GoTo ErrLine
  669.             
  670.             'obtain timeline track from given timeline object
  671.             Set objTimelineTrack = objTimelineObject
  672.             'obtain virtual timeline track from given timeline object
  673.             Set objTimelineVirtualTrack = objTimelineTrack
  674.             
  675.             'get track property values
  676.             objTimelineTrack.AreYouBlank nBlank
  677.             objTimelineObject.GetMuted nMuted
  678.             objTimelineObject.GetStartStop2 dblStartTime, dblStopTime
  679.             objTimelineVirtualTrack.TrackGetPriority nPriority
  680.             
  681.             'append the track's information to the listview control
  682.             Set objListItem = ctrlListView.ListItems.Add(4, "Priority", "Priority")
  683.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nPriority)
  684.             Set objListItem = ctrlListView.ListItems.Add(5, "Blank", "Blank")
  685.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nBlank)
  686.             Set objListItem = ctrlListView.ListItems.Add(6, "Muted", "Muted")
  687.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nMuted)
  688.             Set objListItem = ctrlListView.ListItems.Add(7, "Start", "Start")
  689.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStartTime)
  690.             Set objListItem = ctrlListView.ListItems.Add(8, "Stop", "Stop")
  691.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblStopTime)
  692.             
  693.             'dereference & clean-up
  694.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  695.             If Not objTimelineTrack Is Nothing Then Set objTimelineTrack = Nothing
  696.             If Not objTimelineVirtualTrack Is Nothing Then Set objTimelineVirtualTrack = Nothing
  697.             Exit Sub
  698.             
  699. ErrLine:
  700.             Err.Clear
  701.             Exit Sub
  702.             End Sub
  703.             
  704.             
  705.             ' ******************************************************************************************************************************
  706.             ' * procedure name: ViewSourceInfo
  707.             ' * procedure description: updates the ide/listview to display the given source information
  708.             ' *
  709.             ' ******************************************************************************************************************************
  710.             Public Sub ViewSourceInfo(ctrlListView As ListView, objTimelineObject As AMTimelineObj)
  711.             Dim nMuted As Long
  712.             Dim dblTStart As Double
  713.             Dim dblTStop As Double
  714.             Dim nStretchMode As Long
  715.             Dim objListItem As ListItem
  716.             Dim dblStartTime As Double
  717.             Dim nStreamNumber As Long
  718.             Dim dblDefaultFPS As Double
  719.             Dim bstrMediaName As String
  720.             Dim dblMediaLength As Double
  721.             Dim dblMediaStartTime As Double
  722.             Dim dblMediaStopTime As Double
  723.             Dim objTimelineSource As AMTimelineSrc
  724.             On Local Error GoTo ErrLine
  725.             
  726.             'obtain source from given timeline object
  727.             Set objTimelineSource = objTimelineObject
  728.             
  729.             'obtain property values given the source object
  730.             bstrMediaName = objTimelineSource.GetMediaName
  731.             objTimelineSource.GetMediaTimes2 dblMediaStartTime, dblMediaStopTime
  732.             objTimelineObject.GetStartStop2 dblTStart, dblTStop
  733.             objTimelineSource.GetDefaultFPS dblDefaultFPS
  734.             objTimelineSource.GetStreamNumber nStreamNumber
  735.             objTimelineSource.GetStretchMode nStretchMode
  736.             objTimelineObject.GetMuted nMuted
  737.             
  738.             'append source information on to the listview control
  739.             Set objListItem = ctrlListView.ListItems.Add(4, "MediaName", "MediaName")
  740.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(bstrMediaName)
  741.             Set objListItem = ctrlListView.ListItems.Add(5, "MStart", "MStart")
  742.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblMediaStartTime)
  743.             Set objListItem = ctrlListView.ListItems.Add(6, "MStop", "MStop")
  744.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblMediaStopTime)
  745.             Set objListItem = ctrlListView.ListItems.Add(7, "TStart", "TStart")
  746.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblTStart)
  747.             Set objListItem = ctrlListView.ListItems.Add(8, "TStop", "TStop")
  748.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblTStop)
  749.             Set objListItem = ctrlListView.ListItems.Add(9, "MediaLength", "MediaLength")
  750.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblMediaLength)
  751.             Set objListItem = ctrlListView.ListItems.Add(10, "StreamNumber", "StreamNumber")
  752.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nStreamNumber)
  753.             Set objListItem = ctrlListView.ListItems.Add(11, "FPS", "FPS")
  754.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(dblDefaultFPS)
  755.             Set objListItem = ctrlListView.ListItems.Add(12, "StretchMode", "StretchMode")
  756.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nStretchMode)
  757.             Set objListItem = ctrlListView.ListItems.Add(13, "Muted", "Muted")
  758.             objListItem.SubItems(ctrlListView.ColumnHeaders("Value").SubItemIndex) = CStr(nMuted)
  759.             
  760.             'clean-up & dereference
  761.             If Not objListItem Is Nothing Then Set objListItem = Nothing
  762.             If Not objTimelineSource Is Nothing Then Set objTimelineSource = Nothing
  763.             Exit Sub
  764.             
  765. ErrLine:
  766.             Err.Clear
  767.             Exit Sub
  768.             End Sub
  769.